package br.com.automed.entity;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

@Entity
@Table(name="CM_MEDICO")
@NamedQueries({
	@NamedQuery(name="Medico.findMedicoPorAreaMedica", query="from Medico o where o.areaMedica = :param"),
	@NamedQuery(name="listarMedicos", query="FROM Medico m WHERE m.perfil.tipoPerfil = :perfilFuncionario AND m.cargo.cargo = :cargo")
})
@PrimaryKeyJoinColumn(name="ID_MEDICO", referencedColumnName="ID_FUNCIONARIO")
public class Medico extends Funcionario{
	
	public static final String NAMED_QUERY_LISTAR_MEDICOS_POR_AREA_MEDICA = "Medico.findMedicoPorAreaMedica";
	public static final String NAMED_QUERY_LIST_MEDICOS = "listarMedicos";
	
	@Column(name="ST_CRM")
	private String crm;
	
	@OneToOne
	@JoinColumn(name="FK_ESPECIALIDADE", referencedColumnName="ID_ESPECIALIDADE")
	private Especialidade especialidade;
	
	@OneToOne
	@JoinColumn(name="FK_AREA_MEDICA", referencedColumnName="ID_AREA_MEDICA")
	private AreaMedica areaMedica;
	
	@OneToMany(mappedBy="medico")
	private List<Consulta> consultas;

	@OneToMany(mappedBy="medico")
	private List<Laudo> laudos;

	@OneToMany(mappedBy="medico")
	private List<Prontuario> prontuarios;
	
	public Medico() {
		especialidade = new Especialidade();
		areaMedica = new AreaMedica();
	}
	
	public String getCrm() {
		return crm;
	}
	public void setCrm(String crm) {
		this.crm = crm;
	}
	public Especialidade getEspecialidade() {
		return especialidade;
	}
	public void setEspecialidade(Especialidade especialidade) {
		this.especialidade = especialidade;
	}
	public AreaMedica getAreaMedica() {
		return areaMedica;
	}
	public void setAreaMedica(AreaMedica areaMedica) {
		this.areaMedica = areaMedica;
	}
	public List<Consulta> getConsultas() {
		return consultas;
	}
	public void setConsultas(List<Consulta> consultas) {
		this.consultas = consultas;
	}
	public List<Laudo> getLaudos() {
		return laudos;
	}
	public void setLaudos(List<Laudo> laudos) {
		this.laudos = laudos;
	}
	public List<Prontuario> getProntuarios() {
		return prontuarios;
	}
	public void setProntuarios(List<Prontuario> prontuarios) {
		this.prontuarios = prontuarios;
	}
	
	@Override
	public String toString() {
		

		return this.getClass().getName()+ ";" + getIdUsuario();
	}

}
